package modelbase

import (
	"TaskAssignmentSystem/internal/pkg/code"
	"github.com/go-the-way/exl"
	"time"
)

const (
	AuditPass      = 1 // 审核通过
	AuditNotPassed = 2 // 审核不通过
)

const (
	NotAudit       = 0 // 待审核
	FirstAuditPass = 1 // 一审通过
	FinalAuditPass = 2 // 二审通过
)

/*
 * 项目的题目表
 */

type SystemTopic struct {
	code.Model
	SN                 int                  `json:"sn"`                                                     //序号
	ProjectId          string               `json:"project_id" gorm:"index:project_topic_idx,unique;index"` //关联的项目Id
	TopicId            string               `json:"topic_id" gorm:"index:project_topic_idx,unique;index"`   //自定义题目Id
	BatchId            string               `json:"batch_id"`                                               //批次Id
	Title              string               `json:"title"`                                                  //题目标题
	Status             int                  `json:"status" gorm:"index"`                                    //状态 0未生效 1已完成 2已领取 3指派中 4返修中 5闲置中 6已作废 7已失效
	EffectiveTime      time.Time            `json:"effective_time"  gorm:"index"`                           //题目生效时间
	EndDateTime        time.Time            `json:"end_date_time" gorm:"index"`                             //题目截止时间
	FinishTime         time.Time            `json:"finish_time"`                                            //完成时间
	HaveRead           int                  `json:"have_read"`                                              //当状态为返修的时候，此字段 0 未读 1已读
	TeamNumber         string               `json:"team_number"`                                            //团队编号
	ReceiverId         string               `json:"receiver_id" gorm:"index"`                               //领取人的Id
	GiveUpNumber       int                  `json:"give_up_number"`                                         //被放弃多少次，自动作废的阀值
	TopicNote          []TopicNote          `gorm:"foreignKey:SystemTopicId"`                               //题目备注
	TopicConfiguration []TopicConfiguration `gorm:"foreignKey:SystemTopicId"`                               //题目配置
	TopicUserRecord    []TopicUserRecord    `gorm:"foreignKey:SystemTopicId"`                               //题目领取记录
	Priority           int                  `json:"priority" gorm:"index"`                                  //题目领取的优先级
	Labels             code.SliceString     `json:"labels"`                                                 //题目标签
	EnumType           int                  `json:"enum_type"`                                              //题目类型 0:普通题目 1:一审题目 2:二审题目
	AuditStatus        int                  `json:"audit_status"`                                           //审核状态：0:待审核 1:一审通过 2:二审通过
	RejectTime         time.Time            `json:"reject_time"`                                            //驳回时间
}

func (*SystemTopicExecl) Configure(rc *exl.ReadConfig) {
	rc.SheetIndex = 0
}

type SystemTopicExecl struct {
	SN            int    `excel:"每题序号"`                     //序号
	BatchId       string `excel:"题目批次"`                     //批次Id
	TopicId       string `excel:"题目ID"`                     //自定义题目Id
	Title         string `excel:"题目名字"`                     //题目标题
	EffectiveTime string `excel:"题目生效时间"`                   //题目生效时间
	EndDateTime   string `excel:"截止时间"`                     //题目截止时间
	GiveUpNumber  int    `excel:"被放弃多少次之后，系统自动作废该题目"`       //被放弃多少次，自动作废的阀值
	TopicNoteStr  string `excel:"备注（使“；”分隔符）"`              //题目备注str 	//题目领取的优先级
	Labels        string `excel:"题目检索标签(如不填写，则默认搜可搜素题目名字)"` //题目标签str
}
